package demo.sicua.votesystem.util;

import demo.sicua.votesystem.entity.VO.ResultEnumVO;
import demo.sicua.votesystem.entity.VO.ResultVO;
import org.springframework.stereotype.Component;

/**
 * 注入bean的父类
 */
@Component
public class ResultVOUtil {


    /**
     * 成功
     * @return
     */
    public ResultVO success(){
        ResultVO resultVO = new ResultVO();
        resultVO.setCode(ResultEnumVO.SUCCESS.getCode());
        resultVO.setMsg(ResultEnumVO.SUCCESS.getMsg());
        resultVO.setData(null);
        return resultVO;
    }

    public ResultVO success(String msg){
        ResultVO resultVO = this.success();
        resultVO.setMsg(msg);
        return resultVO;
    }

    public ResultVO success(Object data){
        ResultVO resultVO = this.success();
        resultVO.setData(data);
        return resultVO;
    }

    public ResultVO success(Object data,String msg){
        ResultVO resultVO = this.success(data);
        resultVO.setMsg(msg);
        return resultVO;
    }

    /**
     * 未知错误
     */
    public ResultVO unkwonError(){
        return new ResultVO(ResultEnumVO.UNKNOW_ERROR.getCode(),
                                          ResultEnumVO.UNKNOW_ERROR.getMsg());

    }

    public ResultVO unkwonError(String msg){
        ResultVO resultVO = this.unkwonError();
        resultVO.setMsg(msg);
        return resultVO;
    }

    public ResultVO unkwonError(Object data){
        ResultVO resultVO = this.unkwonError();
        resultVO.setData(data);
        return resultVO;
    }

    public ResultVO unkwonError(Object data,String msg){
        ResultVO resultVO = this.unkwonError(msg);
        resultVO.setData(data);
        return resultVO;
    }

    /**
     * 参数错误
     */

    public ResultVO paramError(){
        return new ResultVO(ResultEnumVO.PARAM_ERROR.getCode(),
                ResultEnumVO.PARAM_ERROR.getMsg());
    }

    public ResultVO paramError(String msg){
        ResultVO resultVO = this.paramError();
        resultVO.setMsg(msg);
        return resultVO;
    }

    public ResultVO paramError(Object data){
        ResultVO resultVO = this.paramError();
        resultVO.setData(data);
        return resultVO;
    }

    /**
     * 登录错误
     */
    public ResultVO loginError(){
        return new ResultVO(ResultEnumVO.LOGIN_ERROR.getCode(),
                ResultEnumVO.LOGIN_ERROR.getMsg());
    }

    public ResultVO loginError(String msg){
        ResultVO resultVO = this.loginError();
        resultVO.setMsg(msg);
        return resultVO;
    }

    /**
     *  资源不存在
     */
    public ResultVO resourceNotFound() {
        return new ResultVO(ResultEnumVO.RESOURCE_NOT_FOUND.getCode(),
                ResultEnumVO.RESOURCE_NOT_FOUND.getMsg());
    }

    public ResultVO resourceNotFound(String msg) {
        ResultVO resultVO = this.resourceNotFound();
        resultVO.setMsg(msg);
        return resultVO;
    }

    public ResultVO resourceNotFound(Object data) {
        ResultVO resultVO = this.resourceNotFound();
        resultVO.setData(data);
        return resultVO;
    }

    public ResultVO resourceNotFound(Object data,String msg) {
        ResultVO resultVO = this.resourceNotFound();
        resultVO.setData(data);
        resultVO.setMsg(msg);
        return resultVO;
    }

    /**
     *  资源已存在
     */
    public ResultVO resourceExist() {
        return new ResultVO(ResultEnumVO.RESOURCE_EXIST.getCode(),
                ResultEnumVO.RESOURCE_EXIST.getMsg());
    }

    public ResultVO resourceExist(String msg) {
        ResultVO resultVO = this.resourceExist();
        resultVO.setMsg(msg);
        return resultVO;
    }

    public ResultVO resourceExist(Object data) {
        ResultVO resultVO = this.resourceExist();
        resultVO.setData(data);
        return resultVO;
    }

    public ResultVO resourceExist(Object data,String msg) {
        ResultVO resultVO = this.resourceExist();
        resultVO.setData(data);
        resultVO.setMsg(msg);
        return resultVO;
    }

}
